import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';

class PlatformCompatibility {
  static bool get isAndroid => Platform.isAndroid;
  static bool get isIOS => Platform.isIOS;
  
  // 检查Android API级别
  static bool isAndroidApiLevel(int minApiLevel) {
    if (!isAndroid) return false;
    // 这里可以通过平台通道获取实际的API级别
    // 暂时返回true，实际使用时需要实现平台通道
    return true;
  }
  
  // 检查iOS版本
  static bool isIOSVersion(double minVersion) {
    if (!isIOS) return false;
    // 这里可以通过平台通道获取实际的iOS版本
    // 暂时返回true，实际使用时需要实现平台通道
    return true;
  }
  
  // 获取适合当前平台的Material Design版本
  static bool shouldUseMaterial3() {
    if (isAndroid) {
      // Android API 21+ 支持Material Design
      return isAndroidApiLevel(21);
    } else if (isIOS) {
      // iOS 13+ 支持更新的设计语言
      return isIOSVersion(13.0);
    }
    return false;
  }
  
  // 获取适合当前平台的图标主题
  static IconThemeData getIconTheme(BuildContext context) {
    if (isAndroid) {
      if (isAndroidApiLevel(21)) {
        return IconTheme.of(context);
      } else {
        // 为旧版本Android提供兼容性图标
        return IconTheme.of(context).copyWith(
          color: Colors.grey[600],
        );
      }
    } else if (isIOS) {
      return IconTheme.of(context);
    }
    return IconTheme.of(context);
  }
  
  // 获取适合当前平台的文本主题
  static TextStyle getTextStyle(BuildContext context, {TextStyle? baseStyle}) {
    final defaultStyle = baseStyle ?? Theme.of(context).textTheme.bodyMedium!;
    
    if (isAndroid) {
      if (isAndroidApiLevel(21)) {
        return defaultStyle;
      } else {
        // 为旧版本Android提供兼容性字体
        return defaultStyle.copyWith(
          fontSize: defaultStyle.fontSize! * 0.9,
        );
      }
    } else if (isIOS) {
      return defaultStyle;
    }
    return defaultStyle;
  }
  
  // 获取适合当前平台的按钮样式
  static ButtonStyle getButtonStyle(BuildContext context) {
    if (isAndroid) {
      if (isAndroidApiLevel(21)) {
        return ElevatedButton.styleFrom();
      } else {
        // 为旧版本Android提供兼容性按钮样式
        return ElevatedButton.styleFrom(
          backgroundColor: Theme.of(context).primaryColor,
          foregroundColor: Colors.white,
          shape: RoundedRectangleBorder(
            borderRadius: BorderRadius.circular(4),
          ),
        );
      }
    } else if (isIOS) {
      return ElevatedButton.styleFrom();
    }
    return ElevatedButton.styleFrom();
  }
  
  // 获取适合当前平台的卡片样式
  static Card getCard({
    required Widget child,
    EdgeInsetsGeometry? margin,
    double? elevation,
  }) {
    if (isAndroid) {
      if (isAndroidApiLevel(21)) {
        return Card(
          child: child,
          margin: margin,
          elevation: elevation,
        );
      } else {
        // 为旧版本Android提供兼容性卡片
        return Card(
          child: child,
          margin: margin,
          elevation: elevation ?? 2,
          shape: RoundedRectangleBorder(
            borderRadius: BorderRadius.circular(4),
          ),
        );
      }
    } else if (isIOS) {
      return Card(
        child: child,
        margin: margin,
        elevation: elevation,
      );
    }
    return Card(
      child: child,
      margin: margin,
      elevation: elevation,
    );
  }
  
  // 获取适合当前平台的对话框样式
  static AlertDialog getAlertDialog({
    required String title,
    required String content,
    List<Widget>? actions,
  }) {
    if (isAndroid) {
      if (isAndroidApiLevel(21)) {
        return AlertDialog(
          title: Text(title),
          content: Text(content),
          actions: actions,
        );
      } else {
        // 为旧版本Android提供兼容性对话框
        return AlertDialog(
          title: Text(title),
          content: Text(content),
          actions: actions,
          shape: RoundedRectangleBorder(
            borderRadius: BorderRadius.circular(4),
          ),
        );
      }
    } else if (isIOS) {
      return AlertDialog(
        title: Text(title),
        content: Text(content),
        actions: actions,
      );
    }
    return AlertDialog(
      title: Text(title),
      content: Text(content),
      actions: actions,
    );
  }
  
  // 获取适合当前平台的导航栏样式
  static AppBar getAppBar({
    required String title,
    List<Widget>? actions,
    Widget? leading,
  }) {
    if (isAndroid) {
      if (isAndroidApiLevel(21)) {
        return AppBar(
          title: Text(title),
          actions: actions,
          leading: leading,
        );
      } else {
        // 为旧版本Android提供兼容性导航栏
        return AppBar(
          title: Text(title),
          actions: actions,
          leading: leading,
          elevation: 4,
        );
      }
    } else if (isIOS) {
      return AppBar(
        title: Text(title),
        actions: actions,
        leading: leading,
      );
    }
    return AppBar(
      title: Text(title),
      actions: actions,
      leading: leading,
    );
  }
  
  // 获取适合当前平台的底部导航栏样式
  static BottomNavigationBar getBottomNavigationBar({
    required List<BottomNavigationBarItem> items,
    required int currentIndex,
    required ValueChanged<int> onTap,
  }) {
    if (isAndroid) {
      if (isAndroidApiLevel(21)) {
        return BottomNavigationBar(
          items: items,
          currentIndex: currentIndex,
          onTap: onTap,
        );
      } else {
        // 为旧版本Android提供兼容性底部导航栏
        return BottomNavigationBar(
          items: items,
          currentIndex: currentIndex,
          onTap: onTap,
          type: BottomNavigationBarType.fixed,
        );
      }
    } else if (isIOS) {
      return BottomNavigationBar(
        items: items,
        currentIndex: currentIndex,
        onTap: onTap,
      );
    }
    return BottomNavigationBar(
      items: items,
      currentIndex: currentIndex,
      onTap: onTap,
    );
  }
} 